/*-----------------------------------------------------------------------------------------------
// Copyright (C) 2016 华跃博弈科技有限公司 
//
// 文件名：        BaseService.cs
// 文件功能描述：   所有业务逻辑的基类，所有业务逻辑相关的子类都必须继承自该类
//
// 
// 创建标识：       庞永飞  2016-04-21
//
// 修改标识：
// 修改描述：
//
// 备注：	
// 				
//-----------------------------------------------------------------------------------------------*/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using HYBY.Task.DataEntity;
using HYBY.Task.Repository;


namespace HYBY.Task.Service {

  public abstract class BaseService<TRepository, TEntity> : IBaseService<TEntity>
    where TRepository :IRepository<TEntity>,new()
    where TEntity : BaseEntity,new() {

    protected TRepository Repository;

    #region 默认构造器

    public BaseService() {
      Repository = new TRepository();
    }

    #endregion

    #region 公共方法

    /// <summary>
    /// 根据主键获取实体
    /// </summary>
    /// <param name="Id">主键ID</param>
    /// <returns>具体实体对象实例</returns>
    public virtual TEntity Get(object Id) {
      return Repository.Get(Id);
    }

    /// <summary>
    /// 保存实体对到持久化存储中
    /// </summary>
    /// <param name="entity">entity</param>
    public virtual bool Save(TEntity entity) {
      return Repository.Save(entity);
    }

    /// <summary>
    /// 保存实体对到持久化存储中
    /// </summary>
    /// <param name="entity">entity</param>
    public virtual bool Delete(TEntity entity) {
      return Repository.Delete(entity);
    }

    /// <summary>
    ///  逻辑删除实体 
    /// </summary>
    /// <param name="entity">entity</param>
    public virtual bool LogicalDelete(TEntity entity) {
      return Repository.LogicalDelete(entity);
    }    

    #endregion
  }
}